home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / platform_device.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.8 KB  |  75 lines

  1. /*
  2.  * platform_device.h - generic, centralized driver model
  3.  *
  4.  * Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org>
  5.  *
  6.  * This file is released under the GPLv2
  7.  *
  8.  * See Documentation/driver-model/ for more information.
  9.  */
  10.  
  11. #ifndef _PLATFORM_DEVICE_H_
  12. #define _PLATFORM_DEVICE_H_
  13.  
  14. #include <linux/device.h>
  15.  
  16. struct platform_device {
  17.     const char    * name;
  18.     int        id;
  19.     struct device    dev;
  20.     u32        num_resources;
  21.     struct resource    * resource;
  22. };
  23.  
  24. #define to_platform_device(x) container_of((x), struct platform_device, dev)
  25.  
  26. extern int platform_device_register(struct platform_device *);
  27. extern void platform_device_unregister(struct platform_device *);
  28.  
  29. extern struct bus_type platform_bus_type;
  30. extern struct device platform_bus;
  31.  
  32. extern struct resource *platform_get_resource(struct platform_device *, unsigned int, unsigned int);
  33. extern int platform_get_irq(struct platform_device *, unsigned int);
  34. extern struct resource *platform_get_resource_byname(struct platform_device *, unsigned int, char *);
  35. extern int platform_get_irq_byname(struct platform_device *, char *);
  36. extern int platform_add_devices(struct platform_device **, int);
  37.  
  38. extern struct platform_device *platform_device_register_simple(const char *, int id,
  39.                     struct resource *, unsigned int);
  40. extern struct platform_device *platform_device_register_data(struct device *,
  41.         const char *, int, const void *, size_t);
  42.  
  43. extern struct platform_device *platform_device_alloc(const char *name, int id);
  44. extern int platform_device_add_resources(struct platform_device *pdev, struct resource *res, unsigned int num);
  45. extern int platform_device_add_data(struct platform_device *pdev, const void *data, size_t size);
  46. extern int platform_device_add(struct platform_device *pdev);
  47. extern void platform_device_del(struct platform_device *pdev);
  48. extern void platform_device_put(struct platform_device *pdev);
  49.  
  50. struct platform_driver {
  51.     int (*probe)(struct platform_device *);
  52.     int (*remove)(struct platform_device *);
  53.     void (*shutdown)(struct platform_device *);
  54.     int (*suspend)(struct platform_device *, pm_message_t state);
  55.     int (*suspend_late)(struct platform_device *, pm_message_t state);
  56.     int (*resume_early)(struct platform_device *);
  57.     int (*resume)(struct platform_device *);
  58.     struct pm_ext_ops *pm;
  59.     struct device_driver driver;
  60. };
  61.  
  62. extern int platform_driver_register(struct platform_driver *);
  63. extern void platform_driver_unregister(struct platform_driver *);
  64.  
  65. /* non-hotpluggable platform devices may use this so that probe() and
  66.  * its support may live in __init sections, conserving runtime memory.
  67.  */
  68. extern int platform_driver_probe(struct platform_driver *driver,
  69.         int (*probe)(struct platform_device *));
  70.  
  71. #define platform_get_drvdata(_dev)    dev_get_drvdata(&(_dev)->dev)
  72. #define platform_set_drvdata(_dev,data)    dev_set_drvdata(&(_dev)->dev, (data))
  73.  
  74. #endif /* _PLATFORM_DEVICE_H_ */
  75.